﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using SiGeCoPre.Presupuesto_BL;
using SiGeCoPre.Presupuesto_Factory;

namespace SiGeCoPre.Presupuesto_ViewGeneral
{
    /// <summary>
    /// Formulario para elegir tareas de mantenimiento
    /// </summary>
    public partial class frmTareas : Form
    {
        static BLMantenimiento createMantenimiento = BLFactoryPresupuesto.createMantenimiento();
        static List<string> nombres = null;
        DataTable tareas = createMantenimiento.getAllMantenimiento();

        public frmTareas()
        {
            InitializeComponent();
        }

        private void frmTareas_Load(object sender, EventArgs e)
        {
            
            if (null != tareas)
            {
                foreach (DataRow dr in tareas.Rows)
                {
                    clbTareas.Items.Add(dr["nombre_tarea"].ToString());
                }
            }
            if (null != nombres)
            {
                foreach (string tarea in nombres)
                {
                    for (int i = 0; i < clbTareas.Items.Count; i++)
                    {
                        if (tarea.Equals(clbTareas.Items[i].ToString()))
                        {
                            clbTareas.SetItemChecked(i, true);
                        }
                    }
                }    
            }
            
        }

        private void btnAsignar_Click(object sender, EventArgs e)
        {
            if (verificar())
            {
                nombres = new List<string>();

                foreach (object item in clbTareas.CheckedItems)
                {
                    nombres.Add(item.ToString());
                }

                this.Close();
                this.Dispose();
            }
        }

        /// <summary>
        /// Intercambia una lista de tareas
        /// </summary>
        /// <returns>Devuelve la lista de tareas seleccionadas</returns>
        public static List<string> pasarTareas()
        {
            return nombres;
        }

        /// <summary>
        /// Carga las tareas seleccionadas
        /// </summary>
        /// <param name="tareas">Determina las tareas seleccionadas</param>
        public void cargarTareas(List<string> tareas)
        {
            nombres = tareas;
        }

        private bool verificar()
        {
            bool verificado = false;

            if (clbTareas.CheckedItems.Count == 0)
            {
                errorProvider1.SetError(clbTareas, "Seleccione una tarea por lo menos");
            }
            else
            {
                errorProvider1.SetError(clbTareas, String.Empty);
                verificado = true;
            }

            return verificado;
        }
    }
}
